using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DTO;
using BUS;

namespace GUI
{
    public partial class giaovien : Form
    {
        public giaovien()
        {
            InitializeComponent();
        }
        DataTable dtGiaoVien = new DataTable();
        DataTable dthanhkiem = new DataTable();
        DataTable dtMonHoc = new DataTable();

        void HienThiListView(ListView lvw, DataTable dt)
        {
            lvw.Items.Clear();
            foreach (DataRow dr in dt.Rows)
                ListView(dr, lvw);

        }
        //hàm hiển thị listview
        void ListView(DataRow dr, ListView lvw)
        {
            ListViewItem li = new ListViewItem();
            li.Text = dr["MaGV"].ToString();
            li.SubItems.Add(dr["TenGV"].ToString());
            li.SubItems.Add(dr["DiaChi"].ToString());
            li.SubItems.Add(dr["DienThoai"].ToString());
            li.SubItems.Add(dr["TenMH"].ToString());
            li.SubItems.Add(dr["TrangThai"].ToString());
            lvw.Items.Add(li);
        }
        //xử lý nút thoát

        private void btnThoat_Click(object sender, EventArgs e)
        {
            DialogResult dlgThoat;
            dlgThoat = MessageBox.Show("Bạn có muốn thoát không ?", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (dlgThoat == DialogResult.Yes)
                this.Close();
        }

       private void giaovien_Load(object sender, EventArgs e)
        {
            //nạp dữ liệu môn học vào cmbMonGiangDay
            dtMonHoc = GiaoVienBUS.DanhSachMonHoc();
            cmbMonGiangDay.DataSource = dtMonHoc;
            cmbMonGiangDay.DisplayMember = "TenMH";
            cmbMonGiangDay.ValueMember = "MaMH";
            cmbMonGiangDay.SelectedIndex = 0;

            radMa.Enabled = false;
            radTen.Enabled = false;
            txtTimKiem.Enabled = false;
            btnTim.Enabled = false;
            //hiển thị danh sách giáo viên vào listview
            dtGiaoVien = GiaoVienBUS.DanhSachGiaoVien();
            HienThiListView(lvwGiaoVien, dtGiaoVien);
       
        }
        void HienThiVaoTextBox(ListViewItem li)
        {
            txtMaGV.Text = li.Text;
            txtTenGV.Text = li.SubItems[1].Text;
            txtDiaChi.Text = li.SubItems[2].Text;
            txtDienThoai.Text = li.SubItems[3].Text;
            cmbMonGiangDay.Text = li.SubItems[4].Text;
            cmbTrangThai.Text = li.SubItems[5].Text;
        }

        private void lvwGiaoVien_SelectedIndexChanged(object sender, EventArgs e)
        {
            foreach (ListViewItem li in lvwGiaoVien.SelectedItems)
                //nêu chọn item thì hiển thị ra textbox
                if (li.Selected)
                    HienThiVaoTextBox(li); 
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
          
            //gán giá trị vào GiaoVienDTO.
            GiaoVienDTO GVDTO = new GiaoVienDTO();
            GVDTO.MaGV = txtMaGV.Text;
            GVDTO.TenGV = txtTenGV.Text;
            GVDTO.DiaChi = txtDiaChi.Text;
            GVDTO.DienThoai = txtDienThoai.Text;
            GVDTO.MaMH = cmbMonGiangDay.SelectedValue.ToString();
            GVDTO.TrangThai = cmbTrangThai.Text;
            //kiểm tra trạng thái
            if (cmbTrangThai.SelectedIndex == 1)
                GVDTO.TrangThai = "Nghỉ";
            else
                if (cmbTrangThai.SelectedIndex == -1)
                    GVDTO.TrangThai = "Còn dạy";
                else
                    GVDTO.TrangThai = cmbTrangThai.Text;
            //xử lý nút thêm giáo viên
            if (radThemGV.Checked)
            {

                if (txtMaGV.Text == "" || txtTenGV.Text == "")
                {
                    MessageBox.Show("Bạn phải nhập đầy đủ mã giáo viên và tên giáo viên", "Thông báo");
                }
                else
                {
                    if (GiaoVienBUS.ThemGiaoVien(GVDTO) == true)
                    {
                        MessageBox.Show("Đã thêm " + GVDTO.TenGV + " Thành công!");
                        dtGiaoVien = GiaoVienBUS.DanhSachGiaoVien();
                        HienThiListView(lvwGiaoVien, dtGiaoVien);
                    }
                    else
                    {
                        MessageBox.Show("Mã " + GVDTO.MaGV + " đã tồn tại!");
                        txtMaGV.SelectAll();
                        txtMaGV.Focus();
                    }
                }
                //LamMoi();
            }
            //xử lý nút cập nhật giáo viên
            if (radCapNhatGV.Checked)
            {
                if (GiaoVienBUS.CapNhatGiaoVien(GVDTO) == true)
                {
                    MessageBox.Show("Đã cập nhật giáo viên có mã " + GVDTO.MaGV + " Thành công!");
                    dtGiaoVien = GiaoVienBUS.DanhSachGiaoVien();
                    HienThiListView(lvwGiaoVien, dtGiaoVien);
                }
                else
                {
                    MessageBox.Show("Mã giáo viên " + GVDTO.MaGV + " không tồn tại, Vui lòng kiểm tra lại!");
                    txtMaGV.SelectAll();
                    txtMaGV.Focus();
                }
                LamMoi();
            }
            //xử lý nút xóa giáo viên
            if (radXoaGV.Checked)
            {
                if (GiaoVienBUS.XoaGiaoVien(GVDTO) == true)
                {
                    MessageBox.Show("Đã xóa giáo viên " + GVDTO.TenGV + " Thành công!");
                    dtGiaoVien = GiaoVienBUS.DanhSachGiaoVien();
                    HienThiListView(lvwGiaoVien, dtGiaoVien);
                    LamMoi();
                }
                else
                {
                    MessageBox.Show("Xóa không thành công");

                }

            }

        }
        void LamMoi()
        {
            txtDiaChi.Text = "";
            txtDienThoai.Text = "";
            txtMaGV.Text = "";
            txtTenGV.Text = "";
            cmbMonGiangDay.Text = "";
            cmbTrangThai.Text = "";
            txtTimKiem.Text = "";
        }
        void enable(Boolean t)
        {
            txtDiaChi.Enabled = t;
            txtTenGV.Enabled = t;
            txtMaGV.Enabled = t;
            cmbTrangThai.Enabled = t;
            cmbMonGiangDay.Enabled = t;
            txtDienThoai.Enabled = t;
        }

        private void radThemGV_CheckedChanged(object sender, EventArgs e)
        {
            radMa.Enabled = false;
            radTen.Enabled = false;
            txtTimKiem.Enabled = false;
            btnTim.Enabled = false;
            LamMoi();
            txtMaGV.Enabled = true;
            enable(true);
            cmbTrangThai.Enabled = false;
            LamMoi();
         }

        private void radCapNhatGV_CheckedChanged(object sender, EventArgs e)
        {
            txtTimKiem.Text = "";
            enable(true);
            txtMaGV.Enabled = false;
            radMa.Enabled = false;
            radTen.Enabled = false;
            txtTimKiem.Enabled = false;
            btnTim.Enabled = false;
        }

        private void radXoaGV_CheckedChanged(object sender, EventArgs e)
        {
            txtTimKiem.Text = "";
            radMa.Enabled = false;
            radTen.Enabled = false;
            txtTimKiem.Enabled = false;
            btnTim.Enabled = false;
            enable(false);
            txtMaGV.Enabled = false;
            enable(false);
        }

        private void radTimKiem_CheckedChanged(object sender, EventArgs e)
        {
            enable(false);
            txtMaGV.Enabled = false;
            radMa.Enabled = true;
            radTen.Enabled = true;
            txtTimKiem.Enabled = true;
            btnTim.Enabled = true;
        }
        //xử lý nút làm mới
        private void btnLamMoi_Click(object sender, EventArgs e)
        {
            LamMoi();
        }
        //xử lý nút Tìm
        private void btnTim_Click(object sender, EventArgs e)
        {
            GiaoVienDTO GVDTO = new GiaoVienDTO();
            GVDTO.MaGV = txtTimKiem.Text;
            GVDTO.TenGV = txtTimKiem.Text;
            if (radTimKiem.Checked)
            {

                if (radMa.Checked)
                {

                    if (GiaoVienBUS.TimGiaoVienTheoMa(GVDTO) == true)
                    {

                        for (int i = 0; i < lvwGiaoVien.Items.Count; i++)
                        {
                            if (lvwGiaoVien.Items[i].Text.ToString() == GVDTO.MaGV)
                            {
                                lvwGiaoVien.Items[i].Selected = true;
                                lvwGiaoVien.Items[i].EnsureVisible();
                                HienThiVaoTextBox(lvwGiaoVien.Items[i]);
                                break;
                            }
                            else

                                lvwGiaoVien.Items[i].Selected = false;
                        }
                    }
                }

                if (radTen.Checked)
                {

                    if (GiaoVienBUS.TimGiaoVienTheoTen(GVDTO) == true)
                    {

                        for (int i = 0; i < lvwGiaoVien.Items.Count; i++)
                        {
                            if (lvwGiaoVien.Items[i].SubItems[1].Text.ToString() == GVDTO.TenGV)
                            {
                                lvwGiaoVien.Items[i].Selected = true;
                                lvwGiaoVien.Items[i].EnsureVisible();
                                HienThiVaoTextBox(lvwGiaoVien.Items[i]);
                                break;
                            }
                            else

                                lvwGiaoVien.Items[i].Selected = false;
                        }
                    }
                }
            }
        }

        private void radMa_CheckedChanged(object sender, EventArgs e)
        {
            txtTimKiem.Text = "";

        }

        private void radTen_CheckedChanged(object sender, EventArgs e)
        {
            txtTimKiem.Text = "";
        }

        private void txtDienThoai_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (char.IsDigit(e.KeyChar) == false && char.IsControl(e.KeyChar) == false)
                e.Handled = true;// ép không nhận ký tự gõ vào

        }      
    }
}